package com.cy.jaaksi.fragpw;

import android.app.Activity;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MyActivity extends Activity implements View.OnClickListener {

    private PopupWindow pw;
    private RelativeLayout titleBar;
    private int xOff;
    private WindowManager.LayoutParams layoutParams;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        layoutParams = getWindow().getAttributes();

        titleBar = (RelativeLayout) findViewById(R.id.main_title_bar);
        TextView txtClick = (TextView) findViewById(R.id.txt_click);
        TextView txtAdd = (TextView) findViewById(R.id.txt_add);

        // TODO 获取屏幕宽高
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int screenWidth = metrics.widthPixels;

        View vPopup = getLayoutInflater().inflate(R.layout.item_popup_add, null);
        // TODO 获取popup的item的宽度和高度
        // ！！！不能通过在 onCreate() 方法中调用 getWidth()来获取控件宽度，因为这时候控件还没有绘制好
        // 可以通过view.getMeasuredWidth() 来获取，调用该方法前，必须调用view.measure(0, 0)，参数可以随意
        vPopup.measure(0, 0);
        int pwWidth = vPopup.getMeasuredWidth();

        // TODO 初始化 PopupWindow
        // 后两个参数为宽度、高度，可以是固定数值，
        // 也可以是 WindowManager.LayoutParams.WRAP_CONTENT, match_parent
        pw = new PopupWindow(
                vPopup, WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT) {
            @Override
            public void dismiss() {
                super.dismiss();
                // TODO 重写 dismiss() 方法，关闭pw 时，恢复窗口的透明度
                changeAlpha(1f);
            }
        };

        // TODO 设置点击PopupWindow 点击外部区域可以关闭
        // 如果 PopupWindow 中包含需要获取ListView等控件，那么pw必须获取焦点，才能响应ListView,EditText
        pw.setFocusable(true);
        // 为 PopupWindow 设置了聚焦后，在设置背景，即可实现点击PopupWindow 外部区域关闭pw
//        pw.setBackgroundDrawable(new ColorDrawable());
        pw.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_popup_bg));
//        pw.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_popup_add_bg));

        // setOutsideTouchable()必须是在 PopupWindow 为非聚焦下才有用
//        pw.setOutsideTouchable(true);

//        pw.getContentView().measure(0, 0);
//        int pwWidth = pw.getContentView().getMeasuredWidth();


        Log.i("info", "pw:" + vPopup.getMeasuredWidth());
        // 居中显示
//        xOff = (screenWidth - pwWidth) / 2;
        xOff = screenWidth - pwWidth - 5;

        txtAdd.setOnClickListener(this);
        txtClick.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.txt_add:
                pw.showAsDropDown(titleBar, xOff, 5);
                // TODO 设置PW 出现时，窗口变暗
                changeAlpha(0.4f);
                break;
            case R.id.txt_click:

                break;
        }

    }

    public void changeAlpha(float alpha) {
        // 设置窗口的背景透明度
        layoutParams.alpha = alpha;
        // 必须设置，否则无效
        getWindow().setAttributes(layoutParams);
    }
}
